<?php
class GProduccion extends Controller
{
	private $_colores;
	
	public function __construct()
	{
		parent::Controller();
		$this->load->library('chcalendario');
		$this->load->model(array('mcompania','mprocesos','mservicios','mjurisdiccion','mprovincia2',
								 'mestatus','metapas','mmodeloetapas','mresponsable','usuarios','mmodeloservicios','mmodeloetapas'));
		
		$this->_colores = array('Verde', 'Amarillo', 'Rojo');
		
		
	}
	
	public function index()
	{
		

		 $this->load->view('main', array('content_page'    =>'gproduccionview',
	        							 'menutop'         => 6,
		 								 'registros'       => $this->obtenerPorcentaje(),
		 								 'etapas'          => $this->metapas->loadEtapasPorCategorias(2),
		 								 'colores'		   => $this->_colores));
		 
		 
	}
	

	public function data($id = false)
	{
		 $page = $this->input->post('page') ? $this->input->post('page') : 1; // Pagina Actual o 1 por default
		 $sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'IdCompania'; // Columna para el order by
		 $sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'ASC'; // Orden (asc|desc)
		 $limit = $this->input->post('rows') ? $this->input->post('rows') : 30;

		 $start = $limit * $page - $limit;
		     if($start < 0) $start = 0;
  
		      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
		      header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
		      header("Cache-Control: no-cache, must-revalidate" );
		      header("Pragma: no-cache" );

		      
		$data = array('idUltimaEtapa' => 16);
		$records = $this->mcompania->loadCompaniasWhere($data,$start, $limit, $sortname, $sortorder);
	
		$totalRecords = count($this->mcompania->loadCompaniasWhere($data, $start, $limit, $sortname, $sortorder));
		

		 $totalPages = ceil($totalRecords/$limit);
		     if ($page > $totalPages) 
		       $page = $totalPages;

		    $json_output = array(
		            'page'		=> $page,
		            'total'		=> $totalPages,
		            'records'	=> $totalRecords,
		            'rows'		=> array()
		        );

		    if($records != false){
			     foreach($records as $objetos){
			     
			     $servicios = $this->mservicios->LoadServicioById($objetos->getIdServicio());
			     $usuario = $this->usuarios->LoadUsuarioById($objetos->getIdUsuario());
			     $responsable=$this->mresponsable->LoadEstatusById($objetos->getIdResponsable());
			     
			     $proceso = $this->mprocesos->loadLastProceso($objetos->getIdCompania());	 
			     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $objetos->getIdCompania()));
				 $procesoFecha = array_reverse($procesoFecha);
			     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
			     
				 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
				 $estatus 	= $this->mestatus->LoadEstatusById($procesos->getIdEstatus());
				 $etapa 	= $this->metapas->LoadEtapaById($procesos->getIdEtapa());
				 		
				 if ($objetos->getIdServicio() == 7 && $procesoDgii->getIdEtapa() == 3) {
					continue;
				 }
				 
				 foreach ($procesoFecha as $k){
				 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
				 	     	$fechaProcesoScuenci = $k->getFechaSys();  
				 	     	
				 	  }else{
				 	  	
				 	  	 break;
				 	  }         
				 }
				 
				 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
				 
			     
			     $colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
				 $colores_etapa=$colores_array_etapa[0];
				 
				 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
				 $dias =  $this->chcalendario->calcularDias($objetos->getFechaUsrCompania());
				 $porciento_bruto = ($dias/$servicios->getTiempoServicio())*100;

				 if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
					  $imagen_etapa = "<img src='http://code.company24h.com/public/images/1.png'/>";
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
					$imagen_etapa="<img src='http://code.company24h.com/public/images/2.png'/>";
				 }else{
					$imagen_etapa="<img src='http://code.company24h.com/public/images/3.png'/>";
				 }
				 
				 $colores_array_servicio = $this->mmodeloservicios->loadModeloServicios();
				 $colores_servicios = $colores_array_servicio[0];

				 if (($porciento_bruto>=$colores_servicios->getVerdeModelo() and $porciento_bruto < $colores_servicios->getAmarilloModelo()) or $porciento_bruto<=0){
					$imagen="<img src='http://code.company24h.com/public/images/1.png'/>";
				 }elseif ($porciento_bruto >=$colores_servicios->getAmarilloModelo() and $porciento_bruto < $colores_servicios->getRojoModelo()){
					$imagen="<img src='http://code.company24h.com/public/images/2.png'/>";
				 }else{
					$imagen="<img src='http://code.company24h.com/public/images/3.png'/>";
				 }
				 
				$estatusDocumento = $objetos->getEstatusCompania();
		
				if($estatusDocumento == 0){
					
					$imagen_documento = "<img src='http://code.company24h.com/public/images/datos1.png'/>";
	
				}elseif ($estatusDocumento == 1)
				{
					$imagen_documento = "<img src='http://code.company24h.com/public/images/datos2.png'/>";

				}	
				
				     $arr = $json_output['rows'][] = array(
				          'IdCompania'            => $objetos->getIdCompania(),
				          'NombreCompania'        => '<strong>'.$objetos->getNombreCompania().'</strong>',
				     	  'IdServicio'            => $servicios->getNombreServicio(),
				     	  'cServicio'             => $objetos->getClasificacionS(),
				     	  'provincia'             => $objetos->getIdProvincia(),
				          'FechaUsrCompania'      => $objetos->getFechaUsrCompania(),
				     	  'FechaSistema'          => $objetos->getFechaSysCompania(),
				     	  'dias'                  => intval($ultimatransaccion),
				     	  'IdEtapa'               => $etapa->GetNombre(),
				     	  'IdEstatus'             => $estatus->getNombre(),
				          'Etapa'                 => $imagen_etapa,
				          'Total'                 => $imagen,
				     	  'User'                  => $usuario->getUsernameUsuario(),
				     	  'Responsable'           => $responsable->getNombre(),
				          'estatus'               => $imagen_documento,
				          'idServicio'            => $objetos->getIdServicio()
				          
				      );
			      }
		      }
		      

		 echo json_encode($json_output);

	}
	
	public function obtenerPorcentaje()
	{
		
		$registros = array();
		$totalVerdes   = 0;
		$totalAmarillo = 0;
	
		$etapaEtapa;
		
		$data = array(2,3,9,16);
		
		//Tengo todas las companias que estan en las etapas DFP, Camara, Documentos, DGII
		$records = $this->mcompania->loadCompaniaCategoria($data);
		
		foreach($records as $objetos){
			     
			     $proceso = $this->mprocesos->loadLastProceso($objetos->getIdCompania());	 
			     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $objetos->getIdCompania()));
				 $procesoFecha = array_reverse($procesoFecha);
			     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
			     
				 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
				 $etapa 	= $this->metapas->LoadEtapaById($procesos->getIdEtapa());
				 		
				 
				 foreach ($procesoFecha as $k){
				 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
				 	     	$fechaProcesoScuenci = $k->getFechaSys();  
				 	     	
				 	  }else{
				 	  	
				 	  	 break;
				 	  }         
				 }
				 
				 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
				 
			     $colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
				 $colores_etapa=$colores_array_etapa[0];
				 
				 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
				
				 if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
					    $totalVerdes++;
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
						$totalAmarillo++;
				 }
			}
			
			
			$registros['verdes']     = ($totalVerdes/count($records)  * 100);
			$registros['amarillos']  = ($totalAmarillo/count($records) * 100);   

			return $registros;
		
	}
	
	public function dataCategoria($id = false)
	{
		 $page = $this->input->post('page') ? $this->input->post('page') : 1; // Pagina Actual o 1 por default
		 $sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'IdCompania'; // Columna para el order by
		 $sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'ASC'; // Orden (asc|desc)
		 $limit = $this->input->post('rows') ? $this->input->post('rows') : 30;
	
		 $etapa = false;
		 $color = false;	
		 
		 $start = $limit * $page - $limit;
		     if($start < 0) $start = 0;
  
		      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
		      header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
		      header("Cache-Control: no-cache, must-revalidate" );
		      header("Pragma: no-cache" );
		      
	   $data = array('clasificacion_proceso' => 2);  
	   if (strlen($id) > 0) {
				$search = explode('-',$id);
				$color = $search[0];
				
				if ($search[1] > 0 ) {
					$etapa = intval($search[1]);
				}
				$records = $this->mcompania->loadCompaniasWhere($data, $etapa, $start, false, $sortname, $sortorder);
	    }else{
	    	
			    $records = $this->mcompania->loadCompaniasWhere($data, $etapa, $start, $limit, $sortname, $sortorder);
	    }
		$totalRecords = count($this->mcompania->loadCompaniasWhere($data, $etapa, $start, $limit, $sortname, $sortorder));
		

		 $totalPages = ceil($totalRecords/$limit);
		     if ($page > $totalPages) 
		       $page = $totalPages;

		    $json_output = array(
		            'page'		=> $page,
		            'total'		=> $totalPages,
		            'records'	=> $totalRecords,
		            'rows'		=> array()
		        );

		    if($records != false){
			     foreach($records as $objetos){
			     
			     $servicios = $this->mservicios->LoadServicioById($objetos->getIdServicio());
			     $usuario = $this->usuarios->LoadUsuarioById($objetos->getIdUsuario());
			     $responsable=$this->mresponsable->LoadEstatusById($objetos->getIdResponsable());
			     
			     $proceso = $this->mprocesos->loadLastProceso($objetos->getIdCompania());	 
			     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $objetos->getIdCompania()));
				 $procesoFecha = array_reverse($procesoFecha);
			     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
			     
				 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
				 $estatus 	= $this->mestatus->LoadEstatusById($procesos->getIdEstatus());
				 $etapa 	= $this->metapas->LoadEtapaById($procesos->getIdEtapa());
				 		
				 if ($objetos->getIdServicio() == 7 && $procesoDgii->getIdEtapa() == 3) {
					continue;
				 }
				 
				 foreach ($procesoFecha as $k){
				 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
				 	     	$fechaProcesoScuenci = $k->getFechaSys();  
				 	     	
				 	  }else{
				 	  	
				 	  	 break;
				 	  }         
				 }
				 
				 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
				 
			     $colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
				 $colores_etapa=$colores_array_etapa[0];
				 
				 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
				 
				 $dias =  $this->chcalendario->calcularDias($objetos->getFechaUsrCompania());
				 $porciento_bruto = ($dias/$servicios->getTiempoServicio())*100;

				 /*if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
					  $imagen_etapa = "<img src='http://company24h.com/c24h/public/images/1.png'/>";
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
					$imagen_etapa="<img src='http://company24h.com/c24h/public/images/2.png'/>";
				 }else{
					$imagen_etapa="<img src='http://company24h.com/c24h/public/images/3.png'/>";
				 }*/
				 
			     if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
				  	  if($color == "Amarillo" || $color == "Rojo"){
					  	continue;
					  }
				 	$imagen_etapa = "<img src='http://code.company24h.com/public/images/1.png'/>";
					 
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
					 if($color == "Verde" || $color == "Rojo"){
					  	continue;
					  }
				 	$imagen_etapa="<img src='http://code.company24h.com/public/images/2.png'/>";
				  
				 }else{
					 if($color == "Verde" || $color == "Amarillo"){
					  	continue;
					  }
					$imagen_etapa="<img src='http://code.company24h.com/public/images/3.png'/>";
				 	 
				 }
				 
				 $colores_array_servicio = $this->mmodeloservicios->loadModeloServicios();
				 $colores_servicios = $colores_array_servicio[0];

				 if (($porciento_bruto>=$colores_servicios->getVerdeModelo() and $porciento_bruto < $colores_servicios->getAmarilloModelo()) or $porciento_bruto<=0){
					$imagen="<img src='http://code.company24h.com/public/images/1.png'/>";
				 }elseif ($porciento_bruto >=$colores_servicios->getAmarilloModelo() and $porciento_bruto < $colores_servicios->getRojoModelo()){
					$imagen="<img src='http://code.company24h.com/public/images/2.png'/>";
				 }else{
					$imagen="<img src='http://code.company24h.com/public/images/3.png'/>";
				 }
				
				     $estatusDocumento = $objetos->getEstatusCompania();
		
					if($estatusDocumento == 0){
						
						$imagen_documento = "<img src='http://code.company24h.com/public/images/datos1.png'/>";
		
					}elseif ($estatusDocumento == 1)
					{
						$imagen_documento = "<img src='http://code.company24h.com/public/images/datos2.png'/>";
	
					}	
				     $arr = $json_output['rows'][] = array(
				          'IdCompania'            => $objetos->getIdCompania(),
				          'NombreCompania'        => '<strong>'.$objetos->getNombreCompania().'</strong>',
				     	  'IdServicio'            => $servicios->getNombreServicio(),
				     	  'cServicio'             => $objetos->getClasificacionS(),
				     	  'provincia'             => $objetos->getIdProvincia(),
				          'FechaUsrCompania'      => $objetos->getFechaUsrCompania(),
				     	  'FechaSistema'          => $objetos->getFechaSysCompania(),
				     	  'dias'                  => intval($ultimatransaccion),
				     	  'IdEtapa'               => $etapa->GetNombre(),
				     	  'IdEstatus'             => $estatus->getNombre(),
				          'Etapa'                 => $imagen_etapa,
				          'Total'                 => $imagen,
				     	  'User'                  => $usuario->getUsernameUsuario(),
				     	  'Responsable'           => $responsable->getNombre(),
				       	  'estatus'               => $imagen_documento,
				          'idServicio'            => $objetos->getIdServicio(),
				          
				      );
			      }
		      }
		      
		 echo json_encode($json_output);
		 
		}
	}